﻿using System;
using System.Data.SqlClient;
using System.Data;
using System.Web;


public class Acceso_a_datos
{
	//string rutaBDLibreria = "Data Source=localhost;Initial Catalog=Libreria;Integrated Security=True";

	public String sentencia_de_sql
	{
		get;
		set;
	}

	public String ruta_a_la_base_de_datos
	{
		get;
		set;
	}

	public SqlConnection conexion
	{
		get;
		set;
	}

	public SqlDataAdapter adaptador
	{
		get;
		set;
	}

	public void conectar_a_la_base_de_datos()
	{
		try
		{
			conexion = new SqlConnection(ruta_a_la_base_de_datos);
			conexion.Open();
		
		}
		catch (Exception)
		{
		}
	}

	public void obtener_el_adaptador()
	{
		try
		{
			adaptador = new SqlDataAdapter(sentencia_de_sql, conexion);
		}
		catch (Exception)
		{
		}
	}

	public void agregar_los_datos_a_una_tabla_en_el_data_set(ref DataSet ds, String nombre_de_la_nueva_tabla)
	{
		try
		{
			adaptador.Fill(ds, nombre_de_la_nueva_tabla);
			
		}
		catch (Exception)
		{
		}
	}

	public bool obtener_tabla(ref DataSet data_set_a_manipular, String nombre_de_la_tabla_a_generar)
	{

		/* 
		 * Es un método que abstrae al usuario de invocar cada método
		 * de esta clase, incluyendo los tratados de excepciónes.
		 * 
		 * Devuelve false en caso de no poder realizar la operación, y true en caso contrario.
		 */
		try
		{
			conectar_a_la_base_de_datos();
		}
		catch (Exception)
		{
			return false;
		}

		try
		{
			obtener_el_adaptador();
		}
		catch (Exception)
		{
			return false;
		}

		try
		{
			agregar_los_datos_a_una_tabla_en_el_data_set(ref data_set_a_manipular, nombre_de_la_tabla_a_generar);
		}
		catch (Exception)
		{
			return false;
		}

		// Como en este punto todo anduvo bien, retorna verdadero.
		return true;
	}
}
